import { createMapEnum, type mapEnumType } from './mapEnum'

export { createMapEnum }

/**
 * @description: 新协议管理状态
 */
export const agreementStatusEnum: mapEnumType = {
    draft: {
        label: '草稿',
        value: 0,
    },
    initialA: {
        label: '待甲方发起',
        value: 1,
    },
    pendingPartyB: {
        label: '待乙方签约',
        value: 2,
    },
    pendingPartyA: {
        label: '待甲方签约',
        value: 3,
    },
    effective: {
        label: '已生效',
        value: 4,
    },
    rejectedByPartyB: {
        label: '乙方已驳回',
        value: 5,
    },
    rejectedByPartyA: {
        label: '甲方已驳回',
        value: 6,
    },
    disabled: {
        label: '已停用',
        value: 7,
    },
    outService: {
        label: '已过期',
        value: 10,
    },
}

/**
 * @description: 新协议管理状态
 */
export const SourceStatusEnum: mapEnumType = {
    jc: {
        label: '集采商城',
        value: 1,
    },
    ztb: {
        label: '招采中心',
        value: 2,
    },
}

/**
 * @description: 是否本人项目
 */
export const FlagStatusEnum: mapEnumType = {
    yes: {
        label: '是',
        value: 1,
    },
    no: {
        label: '否',
        value: 2,
    },
}

/**
 * @description: 是否签章
 */
export const SignStatusEnum: mapEnumType = {
    yes: {
        label: '是',
        value: 1,
    },
    no: {
        label: '否',
        value: 2,
    },
}
/**
 * @description: 审核状态
 */
export const auditStatusEnum: mapEnumType = {
    yes: {
        label: '通过',
        value: 1,
    },
    no: {
        label: '驳回',
        value: 2,
    },
}

/**
 * @description: 表单规则
 */
export const formRules = {
    contractFileList: [
        { required: true, message: '请上传文件', trigger: 'change' },
        {
            validator: (rule, value, callback) => {
                if (!Array.isArray(value) || value.length === 0) {
                    callback(new Error('请上传文件'))
                }
                else {
                    const hasSignedFile = value.some(file => file.signedFlag === true)
                    if (!hasSignedFile) {
                        callback(new Error('至少有一项文件的书香flag为true'))
                    }
                    else {
                        callback()
                    }
                }
            },
            trigger: 'change',
        },
    ],
}
